Comparing complex sets of data, such as lengthy documents, genetic sequences, or versions of software programs, may be a very computationally-intensive and time-consuming task. The task becomes more difficult when one wishes to quickly and compactly represent the differences between the two data sets.
For example, if the data sets are two versions of a software program, one might wish to generate a difference set that represents the differences between a previous version and a later version. The difference set can then be delivered to a system to update the previous version by applying the changes manifest in the difference set, thereby saving having to transmit the entire later version to the user. Particularly when the user's system has limited storage or memory capacities, or where the user's system may receive updates over a wireless network or other network where bandwidth may be at a premium, being able to update the software by transmitting a difference set instead of transmitting the entire later version may be beneficial.
Unfortunately, generating a compact difference set may be a time-intensive process. Conventional methods of generating a difference set may take hours, days, or even a longer period of time depending on the computing resources available to generate the difference set and the size of the data sets.